package pe.gob.mtpe.construcsys.mybatis.implementacion;

import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import pe.gob.mtpe.construcsys.bean.Empleador;
import pe.gob.mtpe.construcsys.bean.Explaboral;
import pe.gob.mtpe.construcsys.bean.ParamConsultaExpLaboral;

import pe.gob.mtpe.construcsys.mybatis.comun.MyBatisConnectionFactory;
import pe.gob.mtpe.construcsys.mybatis.interfase.INTExpLaboral;

public class IMPExpLaboral implements INTExpLaboral {
	
	private SqlSessionFactory sqlSessionFactory;
	
	public IMPExpLaboral(){
		sqlSessionFactory=MyBatisConnectionFactory.getSqlSessionFactory();
	}
	
	
	@Override
	public String insertar(Explaboral explaboral) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.insert("ExpLaboral.insertarExpLaboral", explaboral);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>insertarExpLaboral: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String actualizar(Explaboral explaboral) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.update("ExpLaboral.actualizarExpLaboral", explaboral);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>actualizarExpLaboral: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public String eliminar(Explaboral explaboral) throws Exception {
		SqlSession session = sqlSessionFactory.openSession();
		String mensaje="";
		try {
			session.delete("ExpLaboral.eliminarFisicoExpLaboral", explaboral);
			session.commit();
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>eliminarFisicoExpLaboral: "+e.getMessage());	
			mensaje=e.getMessage();	
			session.rollback();
		} finally {
			session.close();
		}
		return mensaje;
	}

	@Override
	public List<Explaboral> listar(ParamConsultaExpLaboral parametro)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Explaboral>  lista=new ArrayList<Explaboral>();
		try {				
			lista=session.selectList("ExpLaboral.consultaExpLaboral", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>consultaExpLaboral: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

	@Override
	public Explaboral obtener(ParamConsultaExpLaboral parametro) throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		Explaboral  respuesta=new Explaboral();
		try {				
			respuesta=session.selectOne("ExpLaboral.consultaExpLaboral", parametro);		
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>consultaExpLaboral: "+e.getMessage());			
		} finally {
			session.close();
		}
		return respuesta;
	}


	@Override
	public List<Empleador> lstEmpleador(ParamConsultaExpLaboral parametro)
			throws Exception {
		SqlSession session=sqlSessionFactory.openSession();
		List<Empleador>  lista=new ArrayList<Empleador>();
		try {				
			lista=session.selectList("ExpLaboral.lstEmpleador", parametro);	
			System.out.println("lstEmpleador.size():"+lista.size());
		} catch (Exception e) {
			System.out.println("Error en IMPExpLaboral>lstEmpleador: "+e.getMessage());			
		} finally {
			session.close();
		}
		return lista;
	}

}
